from openpyxl.chart import BarChart, Series, Reference
from openpyxl import Workbook

# 创建工作表
wb = Workbook(write_only=True)
ws = wb.create_sheet()

# 准备数据
rows = [
    ('Number', 'Batch 1', 'Batch 2'),
    (2, 10, 30),
    (3, 40, 60),
    (4, 50, 70),
    (5, 20, 10),
    (6, 10, 40),
    (7, 50, 30),
]

# 向工作表插入数据
for row in rows:
    ws.append(row)

# 创建条形图
# 通过分别将类型设置为 col或bar，在垂直和水平条形图之间切换。
# 使用堆叠图表时，需要将重叠设置为100。
# 如果条是水平的，则x和y轴将反转。
chart2 = BarChart()
# 数据
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
# 类型
cats = Reference(ws, min_col=1, min_row=2, max_row=7)
# 向图表添加数据
chart2.add_data(data, titles_from_data=True)
# 向图表添加类型
chart2.set_categories(cats)
chart2.style = 11
chart2.type = "bar"  # 水平条形图
chart2.title = "水平柱状图"
ws.add_chart(chart2, "G10")

# 保存Excel
wb.save("bar2.xlsx")
